package main
// 题目
//给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
//不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
//元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。

// 使用双指针法 进行 覆盖移动 ,使用ans 指针指向 递增的不相同的值
func removeElement(nums []int, val int) int {
	ans := 0
	for _,value := range nums{
		if value != val {
			nums[ans]=value
			ans++
		}
	}
	return ans
}

// 思路使用双指针法，遇到的最大的问题的 是程序边界 如何处理的问题；从一个指针从底部一个指正从顶部找到对应的节点进行 切换即可；这里遇到程序边界的处理问题；
//func removeElement(nums []int, val int) int {
//    first := len(nums)-1
//    second := 0
//    for second<first{
//        for nums[first] ==val{
//            first --
//        }
//        if nums[second] != val{
//            second++
//        }else{
//            nums[second] =nums[first]
//            nums[first]=val
//            second++
//     cond   }
////    }
////    second++
////    return se
//}

func main (){

}